package itheima05;

import java.util.function.Consumer;
import java.util.stream.Stream;

/*
    Stream流中的常用方法
       抽象方法: 因为获取到的都是Stream的实现类对象,必然覆盖重写抽象方法,所以可以直接调用
       public abstract void forEach(Consumer<T> action): 按照方法参数指定的cation注意消费Stream流对象中的元素
       参数:是函数是接口,可以传递匿名内部类对象,lambda表达式
         java.util.function.Consumer<T>: 消费型接口
            抽象方法:
                public abstract void accept(T t): 消费一个T类型的数据t
                什么叫做消费呢?
                因为accept方法是抽象的,只要做覆盖重写{}后,就叫消费了,至于{}中写了哪些代码,我不管
 */
public class Demo06ForEach {
    public static void main(String[] args) {
        Stream<String> s = Stream.of("大娃", "二娃", "三娃", "四娃", "五娃", "六娃", "七娃", "爷爷", "蛇精", "蝎子精");
        //1.匿名内部类对象的方式
        /*s.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });*/
        //2.lambda表达式的标准方式
        /*s.forEach((String name)->{
            System.out.println(name);
        });*/
        //3.lambda表达式的简化方式
        s.forEach(name-> System.out.println(name));
    }
}
